import org.w3c.dom.ls.LSOutput;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:张熳
 * Date:2025-08-07
 * Time:17:33
 */
//数据类型和变量

public class Test {
    public static void main(String[] args) {
        //int 转换成 String
        int a = 123;
        //方法1：
        //String str = a + "";
        //方法2:
        String str = String.valueOf(a);
        System.out.println(str);

        //String 转换为 int
        String s = "123";
        int b = Integer.valueOf(s);
        //int b = Integer.parseInt(s);
        System.out.println(b+1);
    }
    public static void main13(String[] args) {
        //字符串类型  当 + 操作符的任意一边是字符串时，Java 会将另一边的值自动转换为字符串并进行拼接
        int a = 10;
        //a == 10
        System.out.println("a == " + a);//如果+的前面是一个字符串，那么就会将+后面的类型变成一个字符串，两者就会拼接起来
        //System.out.printf("a == %d\n",a);//也可以用C语言的写法
        int c = 20;
        System.out.println("a == " + a + c);//将+后面的类型变成字符串后，进行拼接
        System.out.println("a == " + (a + c));//如果想要a == 30，就加上一个括号

        System.out.println(a + c + " == a + c");//第一个+是计算求和，第二个+是进行拼接
    }
    public static void main12(String[] args) {
        //字符串类型
        String str = "hello";
        String str2 = " world";
        System.out.println(str+str2); //使用+ 可以对字符串进行拼接
        System.out.println(str.length());//java当中，字符串没有所谓的以\0结尾的说法，求长度可以直接调用方法求
        //求字符串中的一个字符
        System.out.println(str.charAt(0));
    }
    public static void main11(String[] args) {
        //类型提升
        int a = 10;
        long b = 20;
        //a提升为long，long类型 和 ling类型 进行运算，结果是long类型
        //int c = a + b;
        long c = a + b;
        //int c = (int)(a+b); //或者将相加后的结果，即long类型强制转化为int类型
        System.out.println(c);

        //虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int
        byte d = 10;
        byte e = 20;
        int f = d + e;
    }
    public static void main10(String[] args) {
        //类型转换
        int a = 10;
        long b = 100L;
        b = a;
        a = (int)b;//可以进行强制类型转换，但是也有风险
        //例如：
        byte c = 10;
        int d = 128;
        c = (byte)d;
        System.out.println(c);//-128
    }
    public static void main9(String[] args) {
        //布尔类型 没有明确说明大小是多少字节
        boolean b = true;
        System.out.println(b);//Boolean 是boolean的包装类

        //在Java中，boolean的取值只有两种：ture和false,C语言中的0表示假，非0表示真不适用（它们是整型）
        /*boolean a = 1;
        System.out.println(a);*/
    }
    public static void main8(String[] args) {
        //char类型 2个字节 unicode字符集
        char ch1 = 'a';
        char ch2 = '好';
        System.out.println(ch1);
        System.out.println(ch2);
        Character b = 'q';//Character 是char的包装类型
    }
    public static void main7(String[] args) {
        //双精度浮点型  8字节
        double d = 12.5;
        System.out.println(d);
        System.out.println(Double.MIN_VALUE);
        System.out.println(Double.MAX_VALUE);//Double 是double的包装类

        int a = 1;
        int b = 2;
        System.out.println(a/b);//0
        //如果想要得到0.5，就用double类型运算
        double c = 1;
        double e = 2;
        System.out.println(c/e);

        double num = 1.1;
        System.out.println(num*num);//小数是不能精确表示每一位的，它只能说精确表示小数点的后几位

        //单精度浮点型 4字节
        float f = 12.5f; //必须+f,或者F,否则会报错
        System.out.println(f);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE);//Float 是float的包装类
    }
    public static void main6(String[] args) {
        //字节型变量 1字节  ，与C语言的char类型一样是1字节，但是java的char类型与C语言不一样
        /*
        最小值：-128
        最大值：127
         */
        byte a = 10;
        System.out.println(a);
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE); //Byte 是byte的包装类
    }
    public static void main5(String[] args) {
        //短整型 2字节
        /*
        最小值：-2^15  -32768
        最大值：2^15 -1  32767
         */
        short sh = 10;
        System.out.println(sh);
        System.out.println(Short.MIN_VALUE);
        System.out.println(Short.MAX_VALUE); //Short 是short的包装类
    }
    public static void main4(String[] args) {
        //长整型变量 8字节
        /*
        最小值：-9223372036854775808
        最大值：9223372036854775807
         */
        long a = 10L; //为了区分int和long类型，一般建议：long类型变量的初始值之后加L或者l,更推荐大写L
        System.out.println(a);
        System.out.println(Long.MIN_VALUE);
        System.out.println(Long.MAX_VALUE); //Long 是long的包装类
    }
    public static void main3(String[] args) {
        //整型变量  4个字节
        /*
        最大值：2147483647
        最小值：-2147483648
         */
        int a = 10;
        System.out.println(a);
        System.out.println(Integer.MIN_VALUE );
        System.out.println(Integer.MAX_VALUE ); //Integer 是int的包装类，通俗的讲就是int的plus版本

        //可以用Integer定义变量
        Integer b = 100;
        System.out.println(b);

        //变量在使用之前没有初识化，则编译期间会报错
       /* int c;
        System.out.println(c);*/

        //在定义int性变量时，所赋值不能超过int的范围
        //int d = 2147483648;
    }
    public static void main2(String[] args) {
        System.out.println(10); //字面常量，不可改变

        //const:指定一个变量在初始化后其值不能被修改 对应在java中是：final,被final修饰的变量叫做常量，不能进行修改
        int a = 10;
        a = 9;
        a = 8;
        System.out.println(a); //a 是变量，可改变

        final int SIZE = 20;//一般对于被final修饰的变量名使用大写字母，小写也行，但更推荐大写
    }
}
//
